Skip to content

feat(compat): bump baton wire-compat pin to 6.1.0 (physical_path) - #102

Merged
jmtcsngr merged 3 commits into
mainfrom
chore/bump-baton-compat-6.1.0
Jul 23, 2026
Merged

feat(compat): bump baton wire-compat pin to 6.1.0 (physical_path)#102
jmtcsngr merged 3 commits into
mainfrom
chore/bump-baton-compat-6.1.0

Conversation

@jmtcsngr

@jmtcsngr jmtcsngr commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Summary

Upstream baton released 6.0.1 (2026-05-19) and 6.1.0 (2026-07-02) since our 6.0.0 pin. Re-pins to 6.1.0 -- as an actual compat feature, not a version-string bump: the real gap found against the new pin is implemented and tested before BATON_COMPAT_VERSION moves.

Also bumped .github/scripts/partisan-pin (58b56da -> 1356610d2a, devel HEAD) to pick up partisan PR #349's test_replicas assertion, which requires physical_path whenever client_version() >= 6.1.0 -- exactly the thing this PR needs exercised in CI. Extendo's pin is untouched; no physical_path work exists there yet (checked the v3.1.0..v3.2.0 diff and a repo-wide search), and extendo uses plain encoding/json.Unmarshal with no DisallowUnknownFields, so the new field is safely ignored there regardless.

Test plan

  • CI (unit-tests.yml) green across the 4.2.7 / 4.3.4 / 4.3.5 matrix
  • partisan-tests.yml green against the bumped pin, including the new physical_path assertion in test_replicas
  • extendo-tests.yml unaffected

jmtcsngr added 2 commits July 23, 2026 13:17
Upstream released 6.0.1 and 6.1.0 since our 6.0.0 pin. Re-pin to
6.1.0 and record the two known gaps against it as tracked issues
rather than letting the drift go unnoticed:

- #100: baton-rs's genQuery builder has no bound on WHERE/SELECT
  condition count, the same OOB-write class upstream patched in
  6.0.1 (PRs #337/#338).
- #101: 6.1.0 added a physical_path field to replicate JSON objects
  that baton-rs doesn't emit yet.

Updates BATON_COMPAT_VERSION, Cargo.toml's description, and every
README/SESSIONS.md reference to the compat target.
…ery bounds check)

Closes the two gaps found against the 6.1.0 re-pin instead of just
claiming it:

- #100: shim_query_add_where/add_select now reject once the query's
  condition/select list reaches iRODS's MAX_NUM_CONDITIONS, instead of
  writing past the fixed-size sqlCondInp/selectInp arrays -- the same
  OOB-write class upstream baton patched in 6.0.1 (wtsi-npg/baton#337,
  #338). Reachable from unbounded caller-supplied JSON via
  metaquery's timestamps/access arrays. add_select gained a Result
  return (25 call sites updated); new integration test drives 2000
  access entries and asserts a clean in-band error.

- #101: added SHIM_COL_DATA_PATH -> COL_D_DATA_PATH through the usual
  shim declare/implement/mirror path, Replicate.physical_path, and
  wired it into fetch_replicates. Extended the --replicate
  integration test and the Replicate round-trip unit test.

Bumped the partisan pin (58b56da -> 1356610d2a, devel HEAD) to pick
up partisan PR #349's test_replicas assertion, which requires
physical_path whenever client_version() >= 6.1.0 -- the thing this
work needed exercised in CI. Extendo's pin is untouched; it has no
physical_path work yet.
@jmtcsngr jmtcsngr changed the title chore(version): bump baton compat pin to 6.1.0 feat(compat): bump baton wire-compat pin to 6.1.0 (physical_path + genQuery bounds check) Jul 23, 2026
Confirmed against iRODS's actual source that inxIvalPair_t/inxValPair_t
are pointer-based structs and addInxIval/addInxVal dynamically grow
their backing storage via malloc -- there is no fixed capacity to
write past. Upstream baton's MAX_NUM_CONDITIONS (which the reverted
fix incorrectly assumed was an iRODS constant, and which doesn't
exist in iRODS headers at all -- confirmed by a CI compile failure)
guards a fixed-size buffer in baton's *own* C code, not the shared
client library baton-rs's shim calls directly. baton-rs never had
this vulnerability.

Reverts the shim bounds check, GenQuery::add_select's Result return
(and the 25 call-site updates), and the now-invalid integration test.
#101 (physical_path) is unaffected and stays in place. Issue #100
closed with a correction rather than left stale.
@jmtcsngr jmtcsngr changed the title feat(compat): bump baton wire-compat pin to 6.1.0 (physical_path + genQuery bounds check) feat(compat): bump baton wire-compat pin to 6.1.0 (physical_path) Jul 23, 2026
@jmtcsngr
jmtcsngr merged commit 40ff9e5 into main Jul 23, 2026
15 checks passed
@jmtcsngr
jmtcsngr deleted the chore/bump-baton-compat-6.1.0 branch July 23, 2026 16:52
@jmtcsngr jmtcsngr mentioned this pull request Jul 23, 2026
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant